Conventionally, encoding source data, for example via contemporary MPEG encoding of captured image data, involves processing the source data to transform the source data into encoded data by applying one or more transforms to the source data. Moreover, decoding the encoded data involves processing the encoded data to transform the encoded data to corresponding decoded data, for example decoded data representative of the source data, by applying one or more inverse transforms to the encoded data. Such encoding can be employed for compressing the source data, for example for reducing its data size for transmission or storage on a data carrier; alternatively, or additionally, such encoding can be employed to increase security of the source data when being transmitted through a transmission medium, for example via the Internet. It is conventional practice to implement such encoders and decoders as self-contained processing units, for example embedded in digital cameras, DVD players and similar consumer products. However, with greater contemporary interconnectivity of data processing devices, it has become a more recent practice to design encoders and decoders to be implemented using software products so that they can be reconfigured, for example for adapting the decoders to cope with encoded data which has been encoded using encoding transforms which have been recently evolved and upgraded.
In a published U.S. Pat. No. 4,553,171, there is described a method of digitally printing a digital image by reference to a succession of code words representing blocks of pixels of an original image. The original image is encoded by subdividing it into uniform size blocks of pixels. Optionally, each of the blocks of pixels is given a unique identifier unless it is identical to any of the previously scanned blocks. Identical blocks of pixels are given the same identifier. When printing the original image as represented by aforesaid blocks of pixels as represented by identifiers expressed as code words, the identifiers are scanned in sequence and the corresponding pixel blocks are successively stored in buffer memories to modulate the printer which generates a printout of the original image. Thus, the original image is printed from data including identifiers comprising block index numbers that refer to a form of database storing representations of the pixel blocks.
In a U.S. Pat. No. 4,013,828, there is described a method of processing an image, wherein the image is scanned and dither-processed in picture element groups of predetermined size. Each picture element group corresponds to a corresponding group of cells of a remotely-located display panel. As each picture element group is scanned, a pattern represented by corresponding dithered image bits to the picture element group is compared to a dictionary of patterns stored in a first memory. If the pattern is not among those stored in the first memory, it is assigned an associated code word and is entered into the memory. Moreover, both the pattern and its code word are transmitted to the remotely-located display panel where they are stored in a second memory; the second memory is then accessed and individual cells of a cell group corresponding to the scanned picture are energized in accordance with the pattern stored in the second memory. If a scanned pattern is the same as one already stored in the first memory, only that code word associated with that pattern is transmitted to the remote location for achieving a reduction in data flow between the first memory and the second memory, namely by reusing data which has already been transferred to the second memory. However, the method does not directly compress the data flow in a conventional sense.
In a published United Kingdom patent GB 2362055, there is described a method of coding an image, wherein the method includes:
(a) dividing the image into image blocks;
(b) encoding the image blocks is such a way that the image blocks are compared with already existing blocks in a database, and choosing an existing block from the database which is a good enough match to a corresponding one amongst the image blocks; and
(c) coding the image blocks with reference to codes representative of the already existing blocks.
The method employs a code library, namely a database. However, on account of data in association with the database elements not having any connection with each other, performing searches in the database to find matches is difficult and requires considerable computing resources as the size of the database is increased. Conversely, when the database is small, matching of the image blocks to the already existing blocks in the database is compromised, with a result that an image cannot be constructed from coded data generated by the method to a sufficient degree of quality. However, the method includes creating new elements if sufficiently good matches are not found, wherein the new element is transmitted together with a reference value which identified it.
The usage of digital data, for example video, image, graphics and audio, is rapidly increasing as every year passes. On account of such usage, the amount of data being stored and transmitted has also increased rapidly as a function of progressing time. Moreover, such increase in data being stored and transmitted requires increasingly more resources for hardware devices, for example more electrical power consumed for providing more processing capacity and larger communication transmission bandwidths. An image generator as described in a published United States patent application US 20101322301 (Applicant: Gurulogic Microsystems Oy) defines a technical solution which addresses how to save bytes and generate varying images by using a database. However, there is a need for an encoder, and a corresponding decoder, based upon the use of an advanced database, which is operable to deliver many different types of databases in a more efficient manner, for use with all kinds of digital data, for example images, video, graphics and audio content.